VERSION HISTORY (PART 6): --------------------------+ History From 02/11/2002, to 11/--/2003 -----------------------------------------------------------------------+ Version .96 (11/--/2003) Update to .95 New Characters: Cactus Barnavile Prang New Locations: Rocky area north of the Fortress of the Dead. Fixed a bug causing guards to not pathfind their 1st waypoint. NPCs will no longer cast Cure on characters for the purpose of curing fire when the target is in Lava. NPCs who are fighting from long range that have no item in hand but can cast Hail or Blaze will now attempt to line up to use those spells. Character temperature now has a dead-zone so when it's at an insifnificant level it is zero'ed out. This is actually a performance optimization as characters with non-zero temperature are tinted. The temps on characters were often never zeroing once changed causing unnecessary tinting. This also effects AI since NPCs will avoid casting temperature altering spells if it would have a negitive effect (i.e. It won't burn a cold enemy) New Terrain Type: Lava, actually deals no damage but very quickly increases character temperature well beyond the burning threshold. Thus even if the character makes it out of the lava it will continue to take damage untill the temperature is lowered (via Cure or naturally). NPCs who fall into Lava will attempt to immediately pathfind out of it. Ripple effect can now be enabled while reflections are disabled by the map. This gives a little more freedom with map design. The engine now handles soundset loading. Before the sound sets had to be setup in every map. This is now automated by the engine. The engine now assigns sound sets on it's own based on the values in soundsets.dat Sound Sets and Character sets still exist as always, however a map designer now only needs to worry about Graphic sets, the rest is transparent. Soundset values still remain in the map files however they are currently ignored. character[c].timer is now saved and restored for non-party members in cells there the map is saved. i.e. You enter a cell, leave it, then return. MindForce and LifeForce potions, when drank give small mp/hp increases as well. AI code that recognizes mages and keeps them from entering melee range when weaponless, has been rewritten. Characters who are thrown now get +2 damage added to current damages. CopyCharacter() now copies the character's roam flag. Neutral Hostile characters are more sensitive to other characters. Fixed an AI bug with the way NPC's decide if they're going to do a Jab or slash attack. NPC's are now less likely to grab characters. -----------------------------------------------------------------------+ Version .95 (07/07/2003) Update to .94 Buy/Sell UI now highlights correctly. It is no longer possible to enter a cell which has no map. CheckIfLeftCell() now compensates for the character's Z. i.e. When the character leaves the screen's edge it's considered to have left the cell even if it's still actually within the cell's cube space. Default Character aglities have been tweaked. Most human characters are now slightly faster. This will be tweaked more in the future. I'd like to hear feedback on this. The characters in map 209-459 no longer roam around. -----------------------------------------------------------------------+ Version .94 (07/07/2003) Beta Test Build NPC's no longer use nearby doors when trying to pick up an item. This was "fixed" in the last version but that code had a bug (untested?). FaceCharacter now aborts if the character and target are the same (can't face itself). DefaultCharacter now defaults the character's fatigue. The default value of net_requested_name is now the current User logged into Windows. Previously this was the computer's network name. This was changed due to potential privacy/security risks and because I think most people would prefer to have it be their User name to begin with. Currently there is no way for the user to change this name. /bugaddress, /buguser & /bugpassword added to allow bug server and login info to be set and saved while in-game. /bug is a new console command which allows you so submit a bug report. Simply type "/bug message". Your message, location in the world, game version and other data are then sent to the bug server which logs the report. Note: This command currently can not be used during network games. Created the Bug Server. This handles and logs bug reports. These reports then become tickets for the online To Do List. Text editing now have insert/overtype modes. Insert is the new default. (toggled with the insert key) This preference is not saved by design. The console now displays correctly when drawing to the primary surface while in windowed mode. The cursor in the console now displays the correct cursor position. Party Member's fatigue is no longer reset between cells. i.e. You run into another cell, your still fatigued. Made Line Of Sight Checks slightly more precise. SetWindowRect() now sets the window_rect correctly while in fullscreen mode. NameObject() and JoinParty() display problems have been fixed. Fixed some background graphic issues with the menu system. It still smudges when the console is lowered. Hit detection for Doors is now the same as with Characters. This method is much more accurate. A melee attack that busts through a door no longer harms any characters. Monkey Paw no longer works if thrown_by is not set. i.e. If for some reason a Paw lands on a dead character but wasn't specifically put there by another character, nothing happens. This fixes the problem with characters holding a Paw, dying, then having the Paw land on their own body thus Rezing them. Monkey Paw's thrown_by status is no longer cleared when it hits a wall. So it can now be throwned at a wall, drop down on a body and Rez it. Removed debug console message from MetaBombic. A Firearm no longer needs to be loaded for an NPC to put it in hand if it currently has something else in hand. It is assumed the weapon is loaded or the other item is ammo for it since this is generally the case. NPC's will no longer swap items if the item in secondary is ammo of any kind unless it does not currently have something in hand (it'll attack with ammo as a last resort). Hail now has a recovery time after the ice is thrown. This is unlike Blaze which has zero recovery but takes longer to cast. Both moves take the same amount of time, the difference being when their projectiles are thrown. P1/P2/P3/P4/AI now briefly display over party members any time a change is made to character control. NPCs no longer freeze/hail frozen characters. NPCs no longer burn/blaze burning characters. Font B1 (Red Text in all the menus etc.) has been completely redrawn. Added sound effect for when inventory is full during fast-pickup. Added sound effect for when a spell fizzles (lack of mana or any other reason). Heal and Cure Spells no longer increase level or exp if the target character did not nead to be healed or cured. Magic Fragments are now fully working. i.e. picking them up now gives the party the Magic Circle. All members are also given full HP, MP, negitive condition is cured, and temperature is nulled. Fixed an infinite loop caused by code which removes items from walls. The above mentioned code now works along the z axis as well. Basically when an item is found to be in a wall it's pulled out of it in the opposite direction it was going. If it was stationary it's pulled towards the character that threw the item or the nearest character. Made some changes to item collision with terrain. The engine is now fully aware if an item hit the terrain from above or from the side (which effects many things). It now treats ground at sea level the same as elevated terrain. This clears up many minor issues. Sadly this fixed critters going splat when they hit elevated ground from above. This is all due to elevated terrain being somewhat of a gimick when it was first put in. I thought I may use it here and there for special, controlled situations. However it has become a normal part of the game no less then any other 3d game. Explosion potions are now deleted before the blast which they cause. This eliminates physics handling of the potion as the blast acts on it. DeleteItem() now aborts if the item is already inactive. This is a minor optimization and may also help network performance. Hammers, Clubs and such now deal double damage to Bone (Skeletons). Skeletons no longer bleed. Skeletons and any other Bone characters now have Bone particle effects. Bone characters now explode into bones when they.. explode. Fixed an inventory bug when dragging an item from a character to an empty inventory slot. When the item previously in that inventory slot's mass was higher then the Str of the character, the move was denied. -----------------------------------------------------------------------+ Version .93 (06/10/2003) Prefs got another facelift and now features "Save & Play" and "Default" buttons. Save & Play runs the engine and Game1. It is currently undertermined if Build-Mode will be usable for end-users. If it is, Prefs will be updated later to support game selection. The Default button only effects options selectible via Pref's UI. i.e. If you edit prefs.cfg to tweak hidden options the default button will not effect those causing you to re-edit each time you defaulted. Fixed a bug causing the Invalid Screen Mode pop-up if you selected the last mode in the drop box the last time Prefs saved. Added Compatibility Mode (Toggled via Prefs). This enables a workaround for a bug found in GeForce cards/drivers and possibly others. Enabling this will decrease performance (how much depends on the video card), but it allows the game to look correctly. The bug causes the transparency color to be blended with the normal graphics during scaled blts. The result of this is pink outlines around many of the games graphics which obviously isn't desired. Future drivers should correct this problem although it's been around since GeForce2 to present. Very old Ati drivers have similar issues. Once again there's new rules for Running vs Fatigue. The idea is to allow the player to fight without restrainted to walking. Yet prevent the player from running marathons accross the map. Each character now has a timer that times how long it's been running (or attempting to run). Depending on how long the character has been running it's fatigue is effected. Note these times are estimates and likely to change: A character can run for about 2 seconds without panalty. During the 2 to 3 second time period the character no longer recovers fatigue. After 3 seconds the character begins gaining fatigue till it's at 75%. When a character's fatigue is over 50% it's running speed is reduced. What all this means is you can freely run in bursts which is common while fighting. Starting with zero fatigue a character can run quite a bit before the timer and fatigue are high enough to slow it down. i.e. You can dash forward and slash a retreating character without penalty. NPC are now aware of these rules. Several AI Play Techniques have been added. This is a list of various skills that AI characters can or can not do based on their exp. i.e. Higher level characters are actually smarter then lower level characters. Note: Actual levels required for these skills is not listed as they may change. Drink Explosion Potion: Very low level characters will drink explosion potions instead of throwing them. At which point they will run at their target. Flank: Low level characters no longer flank. Walk On Ice: This is a slight modification to existing code. Dumb NPCs will mindless attempt to run on slick surfaces and thus fall down. Use Door: Knows what a door is and will open or break one if one is in the way. If the door is locked and the character has a key it will unlock it. Attack Held Character: Will target a character who is being held by another character. Grab Character: Will grab and hold it's target if it has no weapon in hand. Once the grab is made it will call for valid characters to come and target the victim. There is also a possibility that the character will also attack or throw the victim. Defensive: Once the character is below 50% HP it will attempt to absorb blows by facing and not attacking while it's being attacked. It will only attack when there's a good chance of scoring high damage. It will also take advantage of any backstabs it can get. Counter Target: If it's target is slashing it will attempt to counter with a jab. Counter All: If any non-friend is slashing within range it will attempt to jab them. Windowed Mode has been given some attention. It pretty much works fine now: When the user switches to another window or minimizes, the keyboard is now unaquired so that it is properly ignored. (Keyboard was already being re-aquired when the window gains focus again) When the window is restored (from being minimized) the display is now restored correctly (there's a few things that needed to be kicked in the rear). Removed a couple potential exploits: Characters are no longer invulnerable when they fall on ice as a result of running. Characters are no longer invulnerable when they fall as a result of a collision with a stronger character. i.e. You run into a big guy and fall down. These changes prevent a player from making himself invunerable at will to avoid being hit, and then getting back up before their enemy recovers from their own attack. During such a fall the character can now be hit. They also take slightly longer to get back up again. AI Party Members can now be set to one of two modes: Support and War. This mainly effects their magic casting and determines how they prioritize things. In general, when in Support they won't cast offensive spells so that their Mana can be used for healing type spells. When in War they focus on attacking however they will still cast healing type spells but only if it's life or death. This may be toggled in the Stats Panel. Examples of War: Won't cast Heal unless a member is below 25HP. Won't cast Cure unless a member's Con is negitive or they're on fire etc. Will cast projectiles and other magic attacks. Examples of Support: Will cast Heal on members below 50%HP. Will cast Cure and Shields as needed. Won't cast any projectiles of other attack spells. NPC's now do altitude checks on a per-weapon bases when attacking from long range. i.e. They know that if they're higher up a gun would shoot over your head, but a thrown explosion potion would lob down on you etc. NPC's no longer retreat if their Con is 0 or negitive. There is no point in retreating if no health will be gained from it. So in these cases the NPC will continue fighting. Retreating is now an AI-Skill. Very dumb characters lack this skill. NPC's no longer attempt to get in melee range when they are unequipped for melee. i.e. Mages will stay in mid range so they can cast without being hit by physical attacks. Casting spells now gains Exp. Corrected the way characters fall when above water but not in the water. The water-ripple flag which is set by map files is now correctly saved by savegames. Implemented a workaround for a graphic bug with nVidia cards (or their drivers). i.e. The pink shit should be gone. This can be disabled by editing the prefs file. This mode does reduce performance. It may be necessary to disable some features. Thanks nVidia, thanks a bunch. Covers are now blt'ed in four quads instead of all at once. This was in hopes of improving performance. I saw no gain from it on my GF4 but perhaps lower-end cards will benefit. Now that video cards commonly have 64, 128 or more MB of memory I've desided to jam more surfaces into it. Many of these are sizes unheard of being in video back when SCH was young. This has improved performance slightly for cards that can make use of it. This also means less system RAM is being used. Yay. Characters can now be partially seen through water. Interfaces allowing cursor control via D-Pad now allow Run to be held down to move the cursor faster. The cursor's speed now has acceleration as well. When a character is Frozen, checks are done to make sure the character is not stuck in a frame that would cause any sort of effects on other characters. In other words, The character, while frozen is insured to be harmless. I've never had an instance where a character was stuck in an attack frame which would deal damage, however this should have been possible up till now. Circle Weapon spells now work with Berserk. Characters which are shorter then the usual 100 pixels are now hitable. Most attacks strike around 70 pixels high (in relation to the attacker), so these hits were missing short characters. For gameplay purposes this rule bends for short characters. Found a bug with Body Parts graphics being remembered/recalled incorrectly resulting in the wrong graphics being displayed etc. Characters who are cut in half are now cut lower on their sprite. All characters have been aligned with this cut as well. (the effect looks much better now) NPCs now have Pathfinding. This makes use of waypoints within the maps to get around complex obstacles. Added PathPoint objects. These are nothing more then x,y,z points for path waypoints. BuildMode now allows up you place up to 10 PathPoints. Reflected Items now clip at the screen's edges. Structures can now be double-sized (i.e. Bigass Trees!). The scaling is not done in realtime. There are now two surfaces for Structures. One is for normal scaled graphics and the other for 2x scaled graphics. When a map is loaded the engine scans all of the Structure objects and loads only what is needed. What is currently loaded on each surface is kept track of so nothing is ever loaded twice (this is also true for most other assets). The reason I'm not doing realtime scaling (other then the performance gains) is due to the way many video cards blend anything they scale. In a 3d game this is ideal, however in 2d this can look horrible side by side with non-blended graphics. Cover graphics are now kept track of so they're never loaded twice. I thought this was already in years ago (literally), but it seems I decided not to due to the small footprint of these graphics. I think that decision sucks. In Build Mode, if the selected object is within a wall, "Wall" will appear on the cursor. Targetting the Ground now works correctly with elevated terrain. When Targetting the Ground, the cursor now changes to an X while the location is valid. This X also repositions itself to show the correct z position. Currently up to 30 PathPoints objects may be active. The first 10 are defined within the map. These are stored in a new dat file that goes along with the map. This file is not required and will not be created by Build Mode unless PathPoints are defined. If all PathPoints are removed from the map in a Build Mode session this file is deleted. PathPoints 10 and up are created automatically by the engine around things such as Doors. NPCs now have a single waypoint path they can create before resorting to Pathfinding. This is basically a way for them to get around small objects and corners. NPCs now predict collisions with other NPC while in a non-fighting and walking state. If two characters are on a collision course they will now maneuver around each other. Fixed Fatal Error caused by character old_active data not being saved correctly between cells. This was the problem behind the Monkey Paw bug. Fixed bug preventing Blaze and Hail from leveling their magic circles. Bombic and MetaBombic Spells no longer effect Party Members if casted by a Party Member. The value of an item which a Party Member will consider picking up while not in a fight has been increased. Those guys were like vacuum cleaners :P Nondirection Items (stuff that doesn't rotate, in general non-weapons) no longer critical hit or disarm. Some interface graphics have been redone/touched up. Characters that are much higher or lower then you can no longer be talked to. This would happen mistakenly more then anything, while trying to activate something else. NPC's no longer activate nearby doors when they try to pick up an item. Formation Positions now have line of sight checks so that they're not positioned in or behind walls. i.e. If the group passes through a doorway the Formation shrinks to fit. The arrows pointing to offscreen party members no longer slide off the edges of the screen. Fixed a bug causing NPCs to gain Running Fatigue while Walking on Ice after considering Running. i.e. An NPC wishes to Run, then realizing it's on Ice changes it's mind and Walks, it was still gaining fatigue as if it were running. D-Pad control in the Magic UI has been cleaned up a great deal. When a character is added to the Party (typically when you start a new game) all Players have default Spells armed for that character. Gore Items are no longer spawned (disabled). I may do something with these in the future. For now they're just a pain in the ass (trying to pick up a sword and getting a heart sucks). ExplodeCharacter() now forces the character to drop their items in case a previous function did not do this already. ExplodeCharacter() now calls ControlHumanDied is needed even if the character doesn't gore. Gutted FaceCharacter(), I'm now using a much more accurate method which checks to see which axis the target character is closer to. (This is an AI function causing one character to face another) Pressing Swap while no items are equipped in either spot now does nothing at all. (The character would twitch into it's Swap position for one or two frames) Fixed a potential exploit with grabbed characters by adding a hitmap check to the jiggle effect. The issue was, grabbing a character near a ledge would cause the grabbed character to pop up on top of the ledge (from below). At the least this was annoying. Fixed graphical problems with the Create Party Screen (in fullscreen & windowed mode). During character selection the gameworld is now zoomed in 50% just for kicks. FrameRate() is now called from CreateParty(), this allows fps info to be displayed as well as the frame rate to be regulated is it would be in-game. Mini Console added to CreateParty() as well. While on this screen it scrolls slower. This is to allow networked players to see other chat without having the console down. The Vendor interface now calls FrameRate() as well. It also has been cleaned up in Windowed Mode Vendors now have a few more greetings and will even put items on sale from time to time. Console Text problems in Windowed Mode have been fixed (mostly text for error messages). Fixed an issue with the way hitmap files are compressed. This only effected maps that had nearly or completely the entire map covered with a single value. As a result of the compression fix, all dialog trigger codes have been changed. While in Windowed Mode the game now repositions the Windows cursor when the user uses some interfaces. Because Windowed Mode relies on the Window's Cursor to position the game's cursor it was impossible to move the game's cursor without moving Windows cursor. i.e. Pressing a direction on the d-pad while the menu system was open would do nothing. So now, any time something other then the mouse is used to move the Cursor the game takes control of the Windows cursor to make sure it's in sync with the games. prefs.cfg has an option to disable this if it annoys anyone. Added a new item which is an Incense Box. Cause one or more effects to any character within it's range. Each Incense Box can have up to 3 of the following effects: Confu - NPC's will attack a random nearby character. PC's randomly attack, stun, falldown etc. Heal - Gives 2HP about once every second. Mana - Gives 2MP about once every second. Burn - Raises temperature, how much is determined by the Box's Fire Level. Freeze - Lowers temperature, how much is determined by the Box's Ice Level. Vamp - Steals HP, how much is determined by the Box's Vamp Level. Poison - Reduces Con by 1, the % chance of being poisoned per sec is determined by it's Poison Level Some of these effects cannot be combined: Confu & Heal & Mana, Fire & Ice, Vamp & Poison. Incense Boxes are only active while at rest. So they're safe to carry around. They also have a limited amout of time (while active) before they expire. If an Incense Box falls in water it's incense is lost, thus nullifying the Box. Added Incense. This is used to fill an Incense Box. These currently come in four types, Generic, Confu, Heal & Mana. They're Used in the same way as Ammo. Generic Incense has no effect, it's just a refill. Confu, Heal & Mana Incense can not be Used on a Box if a different effect (out of Confu, Heal, Mana) are already in the Box. As stated above, other effects can't be combined. If Burn/Freeze or Vamp/Poison are mixed they will "clash" and nullify a portion of the other. i.e. If an Incense Box has Level 10 Fire and you add Level 15 Ice Incense you'll get Level 5 Ice. New AI for handling Incense Boxes. A character with a Box that has Heal or Mana and no ill effects will drop the Box when it's in a fight. When no longer in a fight it will consider picking up the Box again. Inventory Panel allows Incense Boxes to be filled with Incense. Fixed a potential item dub exploit in the Inventory Panel. I don't think it effected anything but the Incense Boxes however. Basically Ammo wasn't being deleted once used. Items can now be dropped while in the Inventory Panel. It does not matter if there item comes form a character or inventory itself. There's a new round drop area in the center of the Panel. Dragging an item here drops it to the ground. The drop area is actually divided into four areas. Depending on where the item is released within the drop area you can select which character will actually drop the item. Fixed a bug with how held items are z-sorted when they're in-hand and pointing certain directions. Damage caused by some items is now restricted to a maximum of 1hp. Such items would be ammo, keys and food. In the case of food, it still deals normal damage when thrown but not while in-hand. Weaponless attack damage dealt by characters that Can use items is now half (Max 28hp). Weaponless attack damage dealt by characters that can Not use items has been reduced (Max 64hp). When Ambient Birds are playing, Birds now occasionally fly across the cell. Shields are now removed from character objects when they're defaulted. Added Windows Message handling to RollCredits(). Party Members that can't use items will now engage enemies if they are not holding an item. Non-Partymembers no longer gain stats (Their Magic Levels still increase however). Exp gained from Melee attacks has been doubled. Exp gained from Shotgun greatly reduced. Exp gained from Handgun reduced. Exp gained from thrown items has been doubled. Exp gain from attacking behind added (victim can't be retreating). Agl gain from attacking behind tweaked (victim can't be retreating). Def gain was borken. Fixed and tweaked. Str gains have been tweaked. Level Up messages now appear in the console instead of pausing the game with a window. A sound effect has been added to alert the player(s) of a Level Up. Additional Blood has been added to Critical Hits. Melee hits dealing more then 25hp have bigger blood particles/splats. Added a line in console text between cells. Rez is now completed. HP given to the character being resurrected is the caster's Life Magic Level x2. At level 10 and higher, Rez'ed Non-Partymember-NPC's will attack the caster's target, even if the target is a friend of the NPC. This allows Rez to have an offensive use by allowing the caster to turn the dead on your enemies. The casting time for Rez is now much shorter then what it was, however this is still longer then most spells. Required MP remains as 100. Bluster has an added delay before it comes out. There's also a new sound effect during this delay. The idea is to give the would be victim time to dodge. This also tones the spell down a tad since it's already uneffected by fatigue. Bombic now has the same delay as MetaBombic. This is mainly to tone it down but also for consistency. Sound effects have been added to both of these spells as well as an extra warning. Many new sound effects have been added. To name a few, more gib-splats, spell effects, coinage effects (vender interface and cash pickup), magic UI and some others. DisplayStructure and DisplayCovers functions now have checks to see if the image is on the screen before doing a blt. Before this was actually slower since any video card worth a dollar would see this and ignore the blt anyway. However, now that I'm doing blending and other effects it's become necessary to do this check in software to avoid pointless pre-rendering. I actually haven't seen much of a performance boost from this but I'm sure it will help with lower end systems. The fading in and out of Covers (Rooftops) is currently disabled due to it's impact on performance which momentarily throws off the speed of the game. The value if items is now reduced when the item is damaged. The chance of item damage due to various events have been tweaked. In general the chance of damage is now greater. See "ChanceofItemDamage.txt" for details. Fixed bug preventing you from talking with characters. Shields now max out at 25 HP (was 50). They were way too powerful. The FaceCharacter function now works better at very close range. RollStory and RollCredits functions are complete and work in fullscreen and windowed mode. Depending on the Blending Effects option these use one of two methods to present each image. Many older character graphics have been touched up. There is now a minimum fatigue in effect when an attack is made. So button mashing, even with an extremely light weapon will result in diminishing damage with each hit. GUI in Build mode now correctly cycles through all (max) Structures & Covers. Character reflections are now the correct distance when the character is elevated. Added the option map_water within the map files to select if the map contains water (and thus should use water ripple effects). When map_water is off, reflections of characters, items and structures are now translucent based on how far the object is from the ground. Objects above -128 no longer reflect at all. Replaced all GIF files with PNG files. -----------------------------------------------------------------------+ Version .92 (09/14/2002) Running Speed is no longer effected by Fatigue. Removed air-control. Added "Shadows" and "Water Ripples" as options in Preferences. Removed "Flip Method" drop box from Preferences. Removed two of the "Flip Method"'s from the game. Remaining options are Vsync off/on. Added "V-Sync" check box to Preferences. Changed the default Prefs for better performance. When SCH does not find the prefs file, it now shuts down with a message saying to run Preferences. The prefs file will no longer be saved by SCH if the file doesn't already exist. Added a second percent bar after the inital loading bar for the blending lookup table. (If blending is off, this does not happen.) Added Windowed Mode: When in a window the mouse cursor is controlled by Windows, thus the game's sensitivity setting is ignored and all Windows settings are in effect. The game uses the desktop's color depth and ignores the one selected by Preferences. Unlike Fullscreen mode, the game does not pause when focus is lost. i.e. If you click on another app the game will continue running. When focus is lost the game runs but control is lost untill focus is returned. So be in a safe place when switching apps or when your ad-ware slaps a pop-up in your face. Many of my display functions had to be modified to work in a Window due to one or both of the following: Can't BltFast to the Window because it has a clipper. Misaligned since DirectDraw uses screen cords, not window cords. Added "Fullscreen" option to Preferences. Like Color Depth, the preference for Blending Effects is now preserved even if it can't be enabled. (Blending only works in 24 and 32-bit color modes) -----------------------------------------------------------------------+ Version .91 (07/??/2002) Beta Demo Prefs no longer allows Modes lower then 8-bit or higher then 32-bit (i.e. 4-bit). Re-enabled 8-Bit Color in Prefs. Re-enabled 8-bit Color installation in Setup. The delay before character graphics load in the Create Party screen is much shorter now. Added Default Settings for the Tumba Shark. Added the Thumbnail for the Tumba Shark. Shotgun and Handgun damage have been totally redone. I had toned them down before thinking I would have more of these in the world. I've since desided they will be extremely rare, thus they are now quite devistating. Damage is based on Exp and there is no longer a random range. Fixed a bug that caused items floating above the terrain to be deleted when the map was saved and reloaded. i.e. Valuables hanging on walls such as in stores, were being deleted. Valuables laying on the ground are still deleted. The weapons at the UF Training Camp now have no value. Some of the weapons sold by the Green Guard at Crystal Shores (where you start in the demo) are now magic. Fixed Blending in 24-bit color. -----------------------------------------------------------------------+ Version .90 (07/01/2002) Beta Demo Rain Particle Spawns now spit out 3 drops at a time instead of one. Set max rings to 50 Set max particles to 500 Doubled the max number of Covers and Structures (to 20 & 30). Manip now selects the nearest character to talk to. Fixed vendor load/save paths were not specifying a game_root path (they were using the current dir). This caused the below bug to surface. Fixed a crash when saving vendor inventory. If a character drops an item and the item's location is going to be inside a wall the item's x,y is relocated to that of the character that dropped the item. This effect's a thrown item's initial position as well. Setting the music volume while music is turned off no longer crashes the game. (It was setting a buffer that didn't exist) Added some delays to menu controls that didn't have them. Loading a game that doesn't exist no longer brings down the console to display an error. Added "Are You Sure" questions to game loads and saves. Loading from the title screen doesn't nag though. Errors caused before the video system is fully working (i.e. all the surfaces arn't loaded or the screen isn't setup etc), now shutdown whatever video Is running. This allows the screen mode to switch back before potential lockups that would otherwise cause the screen to be corrupted, requiring a restart. Covers can now be copyed in Build Mode as well. (By pressing 8) The displaying of character shadows has been optimized. I've added clipping to them as well. Character shadows are now fixed size (they used to be scaled depending on character size). Critters no longer have shadows. Damage dealt by characters that can't use items has been toned down from the previous tweak. It was a bit insane before. Bullets from Handguns and Shotguns now spawn from the character's location instead of the actual weapon's. The problem was that a very close range the bullets would spawn beyond the target and thus miss. This also was inconsistent from character to character depending on how they're graphic had the gun positioned. Smoke and other effects still come from the gun's barrel. Explosions now fade in translucency near the end of their life. Smoke, and some other particles now have translucency. Blood Stains are now slightly translucent. Just enough to make overlapping blood look more messy. Fixed the Water Sparkle particles being visible over land. Tiki Torches now spawn smoke. Water now has an added ripple effect. It turned out better then expected and is much simpler then many other ideas I had (which got axed because they ran too slow). So I'm happy and the CPU is happy. Made a minor correction to the function MoreOrLess which spits out a random number within a -x to x. It was favoring an extra -1. This wasn't really a huge problem but it screwed with a few cosmetic effects, mainly the new water ripples (which is how I really noticed the bug). Real Time Light now uses 256 shades and blends with BltSlow instead of dithering. Looks really nice but it's still a slideshow. I'll keep optimizing, perhaps one day it'll be a usable feature. At the least I've learned a lot messing with it. BltSlow now checks destination pixels for transparency while doing translucency. If the destination pixel is transparent then the new color is solid. i.e. The transparent color is magenta so rather then blend the pixel with magenta it is left solid. Now why can't my Radeon do this? BltSlow now supports 256 levels of translucency. BltSlow now only works with color keys set as magenta. It turns out checking and setting color keys is somewhat expensive so this speeds things up quite a bit. Effects Surface now uses magenta as it's color key instead of black for the reason above. Added a niffty fading effect to Auto Covers when they turn on/off. Highly optimized BltSlow's tinting features. It was doing an un'needed blt most of the time as well as some extra math I was able to eliminate. The "Scale Realtime" option, I am no longer supporting. Maybe again later. It's taking too much of my time to test and debug this when most people wont use. Originally it was ment for future high-end cards to take advantage of. --That was like three years ago and those "future" cards are the new Radeons and GeForces, both of which fuck the mode by blurring anything they scale in 2D. This blurring is supose to improve the image quality but in reality it screws the image completely. -----------------------------------------------------------------------+ Version .89 (06/07/2002) The checkbox for 8-Bit Graphics in Setup.exe is now disabled. I've desided not to include any 8-bit graphics. Both Setup and and the game's engine still support 8-bit in the event it's ever used in future games. *************!!!! Prefs no longer allows 8-bit modes to be set (see above). Added descriptions to all of the currently working Spells to the Magic UI. Please note, at this point none of the Spells are final. The once that are in and working stiff need tweaks, sounds visual effects. I've also added some niffty scrolling effects when opening and closing the Magic UI. I intend to come up with some nice sound effects to go along with this. I've made a a bunch of tweaks to the long-range attack AI. The following set of changes allows NPC's to better manage their ammo. Once they're out of ammo they will get rid of the empty container (by throwing it at you, why not?). They will hang on to the weapon itself. If they've got a bow and find an arrow laying around (which is common during fights involving archery) they will pick it up and reload. Be aware that these actions are not scripted in any way. The AI is made up of many processes that work together to create these results. Meaning they will adapt to their situation. i.e. They don't start into some sort of routine that they're locked into untill complete. Attacking NPC's no longer consider picking up empty ammo containers. Attacking NPC's carrying a bow now consider picking up Arrows. Attacking NPC's no longer throw Arrows if they're carrying a bow. Attacking NPC's carrying an empty ammo container will now consider throwing it at their target. Attacking NPC's with nothing In Hand will no longer Swap to an Unloaded Firearm. Attacking NPC's with an ammo container containing ammo In Hand will swap it when close range. Attacking NPC's using long range weapons will now avoid standing near other characters attacking their target. This code works with existing code keeping NPC's from shooting each other (which has an intentional margin of error). This allows multiple characters to attack the same target while in a group from long range. Works pretty fucking good I might add! NPC's attacking with a long range weapon now avoid water (they won't shoot underwater so why not avoid it alltogether). NPC's attacking with a long range weapon no longer shoot when their target is slightly out of range. This was another margin of error type of thing but I see it getting exploited. i.e. Long range attacker stands there unloading into the ground at your feet while you heal up or attack with fireballs etc. Then he run out of ammo and is screwed. Instead of shooting the ground they'll attempt to persue their target. NPC's attacking with a long range weapon will now break from attack if their target get's far enough. This range is not the range of their weapon but farther since they'll now persue once out of weapon- range. Neutral Hostile NPC's no longer attack their own kind. Fixed a couple bugs with Build Mode's Paint Bucket. One caused an access violation when black paint reached the map's edge. Added The Arena. This a a single map that allows you to watch NPC vs NPC fights. Before the fight your given the chance to select 1 to 4 characters to take on 1 to 16 others. All of the characters on each side are the same. You may also select primary and seconday weapons for each side. The main purpose of this is for AI testing. This allows me to easily see how particular characters hold up against others, as well as see how they fight in groups and handle many other things which require a great deal of testing and fine tuning. However it doesn't have to just be a testing tool as it can be fun to watch these battles as well. Currently the only way to to at the Arena is via the console command "/arena". Structure Repeat value is now stored in it's Active var instead of it's Category var. This has allowed me to allow Small sized Structures to be repeated as well as the large ones. The max number of reps is now 32. "Build Mode.txt" has been updated with this change. Created WorldMapViewer.exe This basically displays the world map by tiling all the map files onto the screen. This currently only displays the background images and is not intended as a detailed display. It is jsut to give me an idea of what needs to be done and the percent of completion. Added the Berserk Stone. This is a rare item that, when in a character's secondary spot allows the character to deal a max of 80 damage while weaponless. On top of that, these hits are not effected at all by fatigue so the character may attack at high speed without penalty. Any character that is killed by a berserked character will explode during or after the hit, depending on if it was a jab or slash attack. Berserked characters also spawn particles, the lower these are spawning the less life the Berserk Stone has left on it. The stone's life depletes whenever it's in a character's secondary spot. The stone's Value is directly related to it's life. Prefs.exe has been replaced with Preferences.exe which is basically the same thing only this one's been recreated from the ground up. The old interface and a lot of the code from the old version was reused but the program's been structured better and improved. The biggest improvement is that the screen resolution and color depth options have been replaced with "Screen Mode", which combines the two. More importantly is the options in this list are based on modes supported by the video card. Modes not supported by the game are excluded (anything under 640x480 or over 1600x1200). So you end up with a bigger list of options and all of them should work. If when the cfg is loaded and the Screen Mode is not supported (different hardware), it will detect this and notify the user (and default the mode). Another improvement is the game's path is grabbed from win.ini (where Setup stores it). So it can be ran from anywhere. It also does error checking and notifies the user if the cfg file is missing, in which case it let's the user know that default settings are being used. Finally the stupid MFC icon is gone. The spiffy "check" icon I made is now visible in explorer. Created Launcher.exe which handles AutoPlay. All it does is popup a menu, Play, Docs, Install/Uninstall, Cancel. If the game is not currently installed it runs Setup and closes. To damage a Door you no longer need to have a heavy time in hand. Any item will work. You can also attack it without an item at all but the damage is small. Characters that can not use items get a damage bonus when attacking doors. Max Damage dealt by characters that can not use items is now calculated differently then other characters to compensate for the fact they tend to be animals with claws, teeth etc. So in effect they do have either a weapon or are masters of thier attacks (as animals depend on them to survive). Max Damage dealt by characters that are weaponless but can use weapons is now calculated differently as well. These characters do not get the added bonus that the above characters get but it does allow for more damage then before. A character will a lot of exp and/or str can deal a bit of damage with his bare hands now. Changing the current Cell in Build Mode now disables the option to Save untill the Map has been Loaded. Created a new Blt function, BltSlow. This works much like Blt and BltFast only this allows for translucency and hue changes. i.e. Sprites can now be shaded any color. I named this BltSlow because it is in fact slower then the others but also as a constant reminder not to get carried away with it. Using BltSlow I've added many new effects to spells, potions, items and characters. Some examples would be items with magic effects are now shaded to show this. Characters that are freezing/burning appear blue/red. I've taken special care to insure these effects aid gameplay. The colors used are consistent and represent their effects. How saturated these shades let players know how extreme the condition is. Such as a burning character will be very red. As the character cools the redness fades. Items now cast shadows when they're in the air. Characters now have to be close to a blast for it to cause them to explode. There was a problem where characters that died from something other then a blast at the same time a blast was happening they would explode if they're damage was bad enough reguardless of how far they were. When drinking a Cure Potion and the only thing wrong with the character was it's temperature the Potion was not being deleted. Dead bodies are now preserved forever. i.e. When you exit the game, load a game, connect to a server etc. dead bodies are stained. Anti-Piracy code has been reworked a bit. Nuff said ;) The error handler that is used before the font graphics/display is ready will now display a pop-up window if there isn't even a primary surface yet. Before it was just shutting down the game... Well I just spent a few hours trying to figure out why the game wouldn't start. Generic error message is better then no message at all! Fixed a bug causing the game to continue running when it's path info fails to be found. This now causes a "Bad Installation" error. Added "Fixed Width" Bars to the Status Panel and the Create Party Screen. These bars are to make it easy to compare the stats of one character with another. Clicking these in the Create Party Screen will toggle back to the Number Display from before. On the Status Panel both the Bars and the Numbers are shown at all times. The Blood and Gore Option now defaults to being On. I've desided that 99% of people playing this game will want this option and shouldn't have to suffer because of a handful of parents. The game will be promoted as graphicaly violent and not intended for minors. So this change should not be a problem. Made some changes with the engine's Auto Block Size feature. This basically insures most/all screen modes work without causing graphical problems with the way the engine tiles some graphics. This allows more modes to work correctly. I'm sure there's still some oddball modes that may not work but I got all the standards covered. In the event a user must use a mode that the Auto feature doesn't get right they can still manually set the block sizes by editing the cfg file. Fixed the particle stains created by blasts with the "Scale Realtime" option. Fixed a problem the Prefs editor had with Windows XP when launching the HTML help file. This may have effected NT or Windows 2000 as well. Thank you MS for wasting 2 hours of my night. I went back to square one with the framerate regulation code by taking it out completely. There's a new method in place now that I'm very happy with. The game finally runs at the consistancy I originally intended! The game no longer saves and loads framedata. The game now runs at 25FPS. FrameSkipping is still in place and can turn itself off and on automatically (if set to Auto in Prefs). Before displaying that any character has gained a level a check is now done to see if Any character has a target. i.e. There must be complete calm before this is displayed. ---+ -Documented by Kevin Reems